package com.qys.wallet.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qys.wallet.model.dto.WalletCoinAddrQueryDTO;
import com.qys.wallet.model.entity.WalletCoinAddr;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qys.wallet.model.vo.WalletCoinAddrPageVO;
import com.qys.wallet.pay.hyperbc.dto.resp.HyWlCollBackDTO;

import java.math.BigDecimal;

/**
 * <p>
 * 用户充值地址表 服务类
 * </p>
 *
 * @author
 * @since 2023-09-25
 */
public interface WalletCoinAddrService extends IService<WalletCoinAddr> {

    Page<WalletCoinAddrPageVO> pageBySys(WalletCoinAddrQueryDTO query);

    /**
     * 生成充值地址
     *
     * @param chainName 主链类型
     * @param userId    绑定用户
     * @param type      类型
     * @return 充值地址
     */
    String createAddress(String chainName, String userId, Byte type);

    /**
     * 获取充值地址并绑定指定用户
     * @param chainName 主链类型
     * @param userId    绑定用户
     * @param type      类型
     * @return 充值地址
     */
    String getAddress(String chainName,String userId, Byte type);

    /**
     * 提现
     * @param amount 提现数量
     * @param orderNo 提现单号
     * @param address 提现地址
     * @param userId 用户信息
     * @param coinName 提现币种
     * @return
     */
    boolean transfer(BigDecimal amount, String orderNo, String address, String userId, String coinName);


    /**
     * 充值回调
     * @param data  回调data参数
     * @return
     */
    boolean rechargeCallBack(HyWlCollBackDTO data);

    /**
     * 提现回调
     * @param data 回调data参数
     * @return
     */
    boolean withdrawalCallBack(HyWlCollBackDTO data);
}
